﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace GameEngine.View.Components
{
    public interface IWorldView<MyIdType,MyBaseUIElementType>
        where MyIdType : IComparable<MyIdType>
   {
        Point TileSize
        {
            get;
            set;
        }
        float MaxMapHeight
        {
            get;
            set;
        }
        float MinMapHeight
        {
            get;
            set;
        }
        float TileHeightUnit
        {
            get;
            set;
        }
        //event Action<Point> OnSizeChangedEvent;
        void SetMapView(IMapView<MyIdType, MyBaseUIElementType> map);

        void AddUIElement(IThingView<MyIdType, MyBaseUIElementType> p, Point point, float p_3);

        void UpdateUIElement(IThingView<MyIdType, MyBaseUIElementType> p, Point point, float p_3);

        void RemoveUIElement(IThingView<MyIdType, MyBaseUIElementType> p);

        event Action<Point> MyOnSizeChanged;
        event ItemMouseButtonEventDelegate<IThingView<MyIdType, MyBaseUIElementType>> ItemMouseLeftButtonUp;
    }
    
    public delegate void ItemMouseButtonEventDelegate<ItemView>(ItemView item, MouseButtonEventArgs e);
}
